home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / MATH / VAEDIT / VAEDIT.PAS next >
Pascal/Delphi Source File  |  1995-04-18  |  5KB  |  178 lines

  1. unit VAEdit;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls;
  8.  
  9. type
  10.  
  11.   NumberType = Double; {<-----Change If Needed!}
  12.  
  13.   ValidateEdit = class(TEdit)
  14. private
  15.  { Private declarations }
  16. protected
  17.   FGreaterThanOrEqualTo: Boolean;
  18.   FLessThanOrEqualTo: Boolean;
  19.   FGreaterNumber: NumberType;
  20.   FLessNumber: NumberType;
  21.   NumbersAfter: Byte;
  22.   ValidateChar: set of Char;
  23.  { Protected declarations }
  24.   Procedure SetGreaterThanOrEqualTo(Value: Boolean);
  25.   Procedure SetLessThanOrEqualTo(Value:Boolean);
  26.   Procedure SetGreaterNumber(Value: NumberType);
  27.   Procedure SetLessNumber(Value: NumberType);
  28. public
  29.  { Public declarations }
  30.   Constructor Create(AOwner:TComponent); override;
  31.   procedure KeyPress(var Key: Char); override;
  32.   Procedure DoExit; override;
  33. published
  34.  { Published declarations }
  35.   Property GreaterNumber: NumberType
  36.                    read FGreaterNumber
  37.                    Write SetGreaterNumber;
  38.   Property LessNumber: NumberType
  39.                    read FLessNumber
  40.                    Write SetLessNumber;
  41.   Property GreaterOrEqual: Boolean read FGreaterThanOrEqualTo
  42.                                    write SetGreaterThanOrEqualTo;
  43.   Property LessOrEqual: Boolean read FLessThanOrEqualTo
  44.                                 write SetLessThanOrEqualTo;
  45.     end;
  46.  
  47. procedure Register;
  48.  
  49. implementation
  50.  
  51. Constructor ValidateEdit.Create(AOwner:TComponent);
  52.   begin
  53.     inherited Create(AOwner);
  54.     FLessThanOrEqualTo := True;
  55.     FGreaterThanOrEqualTo := True;
  56.     FGreaterNumber := 0.0;
  57.     FLessNumber := 0.0;
  58.     NumbersAfter := 2; {<-----Change If Needed!}
  59.     ValidateChar := ['0'..'9','.','-','+','e','E']; {<-----Change If Needed!}
  60.   end;
  61.  
  62.  
  63. Procedure ValidateEdit.SetGreaterNumber(Value: NumberType);
  64.  Begin
  65.     FGreaterNumber := Value;
  66.      if FLessNumber < FGreaterNumber then
  67.        begin
  68.         FLessNumber := 99999.9999;
  69.         FGreaterNumber := -99999.999;
  70.        end;
  71. end;
  72.  
  73. Procedure ValidateEdit.SetLessNumber(Value: NumberType);
  74.  Begin
  75.     FLessNumber := Value;
  76.      if FLessNumber < FGreaterNumber then
  77.        begin
  78.         FLessNumber := 99999.9999;
  79.         FGreaterNumber := -99999.999;
  80.        end;
  81.  end;
  82.  
  83. Procedure ValidateEdit.SetGreaterThanOrEqualTo(Value:Boolean);
  84. Begin
  85.   if Value<>FGreaterThanOrEqualTo then
  86.     FGreaterThanOrEqualTo:=Value;
  87. end;
  88.  
  89. Procedure ValidateEdit.SetLessThanOrEqualTo(Value:Boolean);
  90. Begin
  91.   if Value<>FLessThanOrEqualTo then
  92.     FLessThanOrEqualTo:=Value;
  93. end;
  94.  
  95. procedure ValidateEdit.DoExit;
  96. var code: integer;
  97.     number: NumberType;
  98.     LessString: String;
  99.     GreaterString: String;
  100. begin
  101.   inherited DoExit;
  102. if Text = '' then
  103.      Begin
  104.        MessageDlg(' Field is required! ',mtWarning, [mbOK],0);
  105.        SetFocus;
  106.        exit;
  107.      end;
  108.  
  109.  
  110.      str(FLessNumber:1:NumbersAfter, LessString);
  111.      str(FGreaterNumber:1:NumbersAfter, GreaterString);
  112.      val(Text, Number,code);
  113.  
  114. if code <> 0 then
  115.    Begin
  116.      MessageDlg(' Incorrect Numeric Format! ', mtWarning, [mbOK],0);
  117.      SetFocus;
  118.    end
  119.  else
  120.    begin
  121.      if ((FLessThanOrEqualTo) and (FGreaterThanOrEqualTo)) then
  122.       begin
  123.        If ((Number > FLessNumber) or (Number < FGreaterNumber)) then
  124.            begin
  125.             MessageDlg(' Must be > or = to '+ GreaterString +
  126.                    ' and < or = to ' + LessString, mtWarning, [mbOK], 0);
  127.             SetFocus;
  128.             Exit;
  129.            end;
  130.       end;
  131.      if ((Not(FLessThanOrEqualTo) and (FGreaterThanOrEqualTo))) then
  132.       begin
  133.        If ((Number >= FLessNumber) or (Number < FGreaterNumber)) then
  134.           begin
  135.            MessageDlg(' Must be > or = '+ GreaterString +
  136.                   ' and < ' + LessString, mtWarning, [mbOK], 0);
  137.            SetFocus;
  138.            Exit;
  139.           end;
  140.       end;
  141.     if ((Not(FLessThanOrEqualTo)) and (Not(FGreaterThanOrEqualTo))) then
  142.       begin
  143.        If ((Number >= FLessNumber) or (Number <= FGreaterNumber)) then
  144.           begin
  145.            MessageDlg(' Must be > '+ GreaterString +
  146.                   ' and < ' + LessString, mtWarning, [mbOK], 0);
  147.            SetFocus;
  148.            Exit;
  149.      end;
  150.     end;
  151.     If ((FLessThanOrEqualTo) and (Not(FGreaterThanOrEqualTo))) then
  152.       begin
  153.        If ((Number > FLessNumber) or (Number <= FGreaterNumber)) then
  154.           begin
  155.            MessageDlg(' Must be > '+ GreaterString +
  156.                   ' and < or = to ' + LessString, mtWarning, [mbOK], 0);
  157.            SetFocus;
  158.            Exit;
  159.           end;
  160.       end;
  161.  
  162.   end;
  163.  
  164.   end ;
  165.  
  166.  procedure ValidateEdit.KeyPress(Var Key: Char);
  167.  begin
  168.   if (NOT (Key in ValidateChar)) and (Key<>#08) then  Key:=#0;
  169.   inherited KeyPress(Key);
  170.  end;
  171.  
  172. procedure Register;
  173. begin
  174.   RegisterComponents('Additional', [ValidateEdit]);
  175. end;
  176.  
  177. end.
  178.